﻿using CREAPA.Dominio;
using CREAPA.Repositorio;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CREAPA.RepositorioADO
{
    public class ContrachequeItensRepositorioADO
    {
        private Contexto contexto;

        public IEnumerable<ContrachequeItens> ListarContrachequeItens(string cpf,int ano,string mes,int tipofolha)
        {
            using (contexto = new Contexto())
            {
                var strQuery = String.Format("select codigo Codigo,descricao, (case when tipoValor = 1 then convert(decimal(12, 2), round(valor, 2, 1)) end) Proventos, (case when tipoValor = 0 then convert(decimal(12, 2), round(valor, 2, 1)) end) Descontos from Contra_Cheque_Itens" +
                                            " where cpffunc='{0}' and ano={1} and mes={2} and tipofolha={3} order by tipoValor desc", cpf, ano, mes, tipofolha);
                var retornoDataReader = contexto.ExecutaComandoComRetorno(strQuery);
                return TransformaReaderEmListaDeObjeto(retornoDataReader);
            }
        }

        public void InserirContrachequeItens(ContrachequeItens cc)
        {
            var strQuery = "";
            strQuery += " insert into Contra_Cheque_Itens (cpffunc,ano,mes,codigo,descricao,valor,tipoValor,TipoFolha)";
            strQuery += string.Format(" values ('{0}',{1},{2},'{3}','{4}',{5},'{6}',{7})",
                cc.CPF, cc.Ano, cc.Mes, cc.Codigo,cc.Descricao, cc.Valor.ToString().Replace(",", "."), cc.TipoValor, cc.TipoFolha);

            using (contexto = new Contexto())
            {
                contexto.ExecutaComando(strQuery);
            }
        }


        private List<ContrachequeItens> TransformaReaderEmListaDeObjeto(SqlDataReader reader)
        {
            var cc = new List<ContrachequeItens>();
            while (reader.Read())
            {
                var TemObjeto = new ContrachequeItens()
                {                    
                    Descricao = reader["Descricao"].ToString(),
                    Codigo = reader["Codigo"].ToString(),
                    Proventos = reader["Proventos"]!= DBNull.Value ? float.Parse(reader["Proventos"].ToString()):0,
                    Descontos = reader["Descontos"] != DBNull.Value ? float.Parse(reader["Descontos"].ToString()) : 0,
                };               
                
                cc.Add(TemObjeto);
            }
            reader.Close();
            return cc;
        }
    }
}
